/**
 *  一句话思路：
    算法描述：
    解决所需数据结构+算法：
**/
#include<iostream>
#include<cstring>
using namespace std;
int n, t[200010], p[200010], dp[200010];
int min(int a, int b) {return a>b?b:a;}


int main() {
    memset(t, 0, sizeof(t));
    memset(p, 0, sizeof(p));
    memset(dp, 0x3f, sizeof(dp));
    cin >> n;
    for(int i=0; i<n; i++)  cin >> t[i];
    for(int i=0; i<n; i++)  cin >> p[i];
    for(int i=1; i<n; i++) {
        dp[i] = min(dp[i-1] + p[i-1], t[i]);
    }

    // 求得初始值，再次刷新最小值
    dp[0] = min(dp[n-1] + p[n-1], t[0]);
    for(int i=1; i<n; i++) {
        dp[i] = min(dp[i-1] + p[i-1], t[i]);
    }
    int q, sc;
    cin >> q;
    while(q--) {
        cin >> sc;
        cout << dp[sc-1] << endl;
    }

    return 0;
}